package com.skyable.common.common;

import java.io.Serializable;

/**
 * @author GaoYuan
 * @date 2019/11/4 15:19
 * @desc 服务接口返回对象。
 *
 */
public class ServiceResult<T> implements Serializable {

	/**
     * 
     */
	private static final long serialVersionUID = 3765720967319047788L;

	private T result;
	private boolean success = true;
	private String message = "";
	private Integer code;

	/**
	 * 服务是否执行成功。
	 * 
	 * @return
	 */
	public boolean getSuccess() {
		return success;
	}

	/**
	 * 服务是否执行成功。
	 * 
	 * @param isSuccess
	 */
	public void setSuccess(boolean isSuccess) {
		this.success = isSuccess;
	}

	/**
	 * 设置服务执行结果。
	 * 
	 * @param result
	 */
	public void setResult(T result) {
		this.result = result;
	}

	/**
	 * 服务执行过程发生异常时设置错误信息。 该方法会将【success-服务是否执行成功】设置为false。
	 * 
	 * @param code
	 *            返回给客户端的消息代码。
	 * @param message
	 *            返回给客户端的消息描述。
	 */
	public void setError(Integer code, String message) {
		this.code = code;
		this.message = message;
		this.success = false;
	}

	/**
	 * 返回给客户端的消息代码。
	 * 
	 * @return
	 */
	public Integer getCode() {
		return code;
	}

	/**
	 * 获取服务执行结果。
	 * 
	 * @return
	 */
	public T getResult() {
		return result;
	}

	/**
	 * 获取服务返回的描述消息。
	 * 
	 * @return
	 */
	public String getMessage() {
		return message;
	}

	/**
	 * 设置服务返回的描述消息。
	 * 
	 * @param value
	 */
	public void setMessage(String value) {
		this.message = value;
	}

	@Override
	public String toString() {
		return "[result=" + result + ", message=" + message + ", success="
				+ success + ", code=" + code + "]";
	}

}
